iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0
Modern Web

弄點簡單的 Chrome Extension 讓生活更方便系列 第 19

Chrome Extension 19 - 隨手筆記功能

  • 分享至 

  • xImage
  •  

建立一個右鍵選擇字串,可以出現選單,可以暫存選取文字、網頁網址、日期的功能

仍接續使用前面的樣板創建

不過多了背景運行的程式,所以需要使用 src\backend 底下的 index.js

  • 建立選單,當選擇後,會儲存網頁資訊
  • 使用 chrome.runtime.onInstalled 修正選單被重複創建的錯誤
chrome.runtime.onInstalled.addListener(function() {
var contextMenuItem = {
    "id" : "AddNote",
    "title" : "Add Note : %s",
    "contexts" : ["selection"] 
};

chrome.contextMenus.create(contextMenuItem);

chrome.contextMenus.onClicked.addListener(function(clickData){
    if(clickData.menuItemId=="AddNote"){
        var selection = clickData.selectionText;

        var url = clickData.pageUrl;
        var message = selection;
        var date = new Date();
        var item = {
            url : url,
            message : message,
            date : date.toLocaleDateString("zh-Tw")
        };

        chrome.storage.local.get("tempData",function(result) {
            var items = result.tempData;
  
            if(items=== undefined)
            {
              items = [];
            }
            
            items.push(item);

            chrome.storage.local.set({"tempData" : items},function() {});
        });
    }
});
}

src\popup\root.vue template 部分 :

<template lang="pug">
<el-container>
  <el-main>
    <el-row v-for="(item,index) in items">
      <el-col>
        <a target="_blank" :href="item.url">{{item.message}}</a>
        <span>{{item.date}}</span>
        <el-button type="danger" icon="el-icon-delete" circle @click="deleteItem(index)"></el-button>
      </el-col>
    </el-row>
  </el-main>
</el-container>
</template>

src\popup\root.vue script 部分 :

<script>
  export default {
    data: () => ({
      items :[]
    }),
    computed: { },
    created () { },
    mounted() {
      var vm = this;
      vm.loadData();
    },
    updated() {
      var vm = this;
      vm.saveData();
    },
    methods: {
      deleteItem (index){
          this.items.splice(index,1);
      },
      loadData : function(){
          var vm = this; 
          chrome.storage.local.get("tempData",function(result) {
          vm.items = result.tempData;

          if(vm.items=== undefined)
          {
            vm.items = [];
          }
        });
      },
      saveData : function(){
        chrome.storage.local.set({"tempData" : this.items},function() {});
      }
    }
  }
</script>
<style lang="scss">
  body {
    width : 520px
  }
</style>

執行結果如下 :

頁面會出現選單 :
https://ithelp.ithome.com.tw/upload/images/20181103/20094223fS7v68gSZh.png

添加後,資料會儲存在該 Chrome Extensions 裡面顯示 :
https://ithelp.ithome.com.tw/upload/images/20181103/20094223go1IO5uS0H.png

感謝收看 :)


上一篇
Chrome Extension 18 - 今天要吃啥產生器
下一篇
Chrome Extension 20 - Youtube 筆記功能 Part 1 - 取得影格時間與簡易筆記
系列文
弄點簡單的 Chrome Extension 讓生活更方便30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言